﻿namespace MicroCloud.Authorization
{
    #region "数据实体信息接口"
    /// <summary>
    /// 数据实体信息接口
    /// </summary>
    public interface IEntityInfo : IEntity<long>
    {
        #region "属性"
        #region "获取或设置 实体名称"
        /// <summary>
        /// 获取或设置 实体名称
        /// </summary>
        string Name { get; set; }
        #endregion
        #region "获取或设置 实体类型名称"
        /// <summary>
        /// 获取或设置 实体类型名称
        /// </summary>
        string TypeName { get; set; }
        #endregion
        #region "获取或设置 数据库架构"
        /// <summary>
        /// 获取或设置 数据库架构
        /// </summary>
        string DbSchema { get; set; }
        #endregion
        #region "获取或设置 数据库对象名称"
        /// <summary>
        /// 获取或设置 数据库对象名称
        /// </summary>
        string DbObjName { get; set; }
        #endregion
        #region "获取或设置 数据库对象类型"
        /// <summary>
        /// 获取或设置 数据库对象类型
        /// </summary>
        DatabaseObjectType DbObjType { get; set; }
        #endregion
        #region "获取或设置 是否启用数据审计"
        /// <summary>
        /// 获取或设置 是否启用数据审计
        /// </summary>
        bool AuditEnabled { get; set; }
        #endregion
        #region "获取或设置 是否启用数据事件"
        /// <summary>
        /// 获取或设置 是否启用数据事件
        /// </summary>
        bool EventEnabled { get; set; }
        #endregion
        #region "获取或设置 实体属性信息JSON字符串"
        /// <summary>
        /// 获取或设置 实体属性信息JSON字符串
        /// </summary>
        string PropertyJson { get; set; }
        #endregion
        #region "获取 实体属性信息"
        /// <summary>
        /// 获取 实体属性信息
        /// </summary>
        EntityProperty[] Properties { get; }
        #endregion

        #endregion

        #region "方法"
        #region "从实体类型初始化实体信息"
        /// <summary>
        /// 从实体类型初始化实体信息
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="serviceProvider"></param>
        void FromType(Type entityType, IServiceProvider serviceProvider);
        #endregion

        #endregion

    }
    #endregion

}
